函数式编程中常用的函数(总结) |
您所在的位置:网站首页 › 函数式编程 响应式编程的关系有哪些 › 函数式编程中常用的函数(总结) |
一 函数式编程理解
1.函数式编程的含义: 函数式编程是一种编程的基本风格,就是构建程序的结构和元素的方式。函数式编程将计算过程看做是数学函数,也就是可以使用表达式编程。在函数的代码中,函数的返回值只以来传入函数的参数,因此使用相同的参数调用2次就会得到相同的结果。 如果说这段话很难理解,我觉得可以这么想,函数式编程就是一种函数,或者是一种结构,在该结构中,将函数和函数的参数都作为参数。 2.函数式编程具有的优点: a.便于进行单元测试 b.便于调试 c.适合并行执行 二 常用的函数式编程1.Lambda表达式 Lambda表达式是一种匿名函数,它的结构如下 lambda 参数列表:函数返回值或表达式语句 Lambda表达式可以做如下功能: a.定义函数 例如如下代码: getsum = lambda x,y : x+y该结构和如下代码是一样的: def getsum(x,y): return x+y使用lambda表达式定义完成函数后,可以直接引用该函数,如下代码: getsum = lambda x,y : x+y print(getsum(1,2))结果会显示结果为:3 b.构建lambda表达式数组 定义Lambda表达式数组的结构为: 数组名=[(lambda 参数:函数返回值表达式1),((lambda 参数:函数返回值表达式2)···] 调用Lamda表达式数组的方式是: 数组名[索引](参数列表) 举例如下 myarr =[(lambda x,y: x+y),(lambda x,y:x*2+y*2),(lambda x,y:x*3+y*3)] print(myarr[0](1,1),myarr[1](2,3),myarr[2](1,4))在上述代码中定义了一个lambda表达式数组,然后给每一个表达式赋值,得出的结果分别为:2 10 15 lambda表达式也可以直接作为函数的返回值,可写成 return lambda表达式 即可 2. map函数 map函数将指定序列中的元素作为参数依次被制定函数调用,并输出一个新的序列作为返回值,map函数的语法结构为: 结果序列 = map(函数名,[参数1的序列],[参数2的序列]···) 具体例子可看如下代码 #定义函数getsum() def getsum(x,y): return x+y # 使用map函数将getsum作为参数,并将两个序列的内的元素分别作为x和y的参数传递值 arrr = map(getsum,[1,2,3],[2,5,6]) for i in arrr: print(i)经过计算,输出的结果分别是 3 7 9可以将map函数与lambda表达式一起使用,代码如下: arr2 = map(lambda x: x ** 2, [2,4,6,8]) for i in arr2: print(i)输出结果为: 4 16 36 643.filter函数 filter函数可以对指定的序列进行过滤,该函数的语法结构如下: filter(函数,序列) 在该语法结构中,filter内的函数返回值是布尔值False或者是True,序列值可以是列表、元组或者是字符串,返回的结果为函数判断为True对应的序列元素,具体看如下代码: #定义一个求偶数的函数is_even def is_even(x): return x%2==0 #使用filter函数调用is_even函数 arr3 = filter(is_even,[1,2,3,4,5,6,7,8]) for i in arr3: print(i)返回值为: 2 4 6 84.reduce函数 这个函数非常有意思,有点递归的感觉,引用的函数必须有两个参数,在引用序列的时候,序列中第一个和第二个元素作为参数输出结果作为新的第一个参数,第三个元素变成第二参数,以此结合。该函数从python3.0开始就不能直接在python内置函数内了,需要调用functools模块才可以。 函数的具体语法结构如下: 计算结果 = reduce(函数,序列) 具体示例代码如下: #引入functools模块 import functools #定义一个简单的数相乘的函数求积 def com(x,y): return x*y result = functools.reduce(com,[1,2,3,4,5,6,7]) print(result)输出结果为:5040 该函数的运行过程就是123*···*7=5040 可以理解为com(com(com(com(com(com(1,2),3),4),5),6),7)的结果 和如下的代码有类似: def cum(x): if x==1: return 1 else: return cum(x-1)*x print(cum(7))该代码的输出结果也是:5040 5.zip函数 zip函数就像它的名字一样是个压缩的用途,一般是将多个元组打包成一个列表进行运算,所以zip函数的参数都是元组。 压缩的示例代码如下: a = [1,2,3] b = [3,4,5] c = [7,6,0] zippped = zip(a,b,c) for i in zippped: print(i)输出结果为: (1, 3, 7) (2, 4, 6) (3, 5, 0)zip函数也可以把压缩的列表进行解压,在打包结果前加上*即可,示例代码如下: a = [1,2,3] b = [3,4,5] c = [7,6,0] #将数据压缩,结果为zipped zippped = zip(a,b,c) #将zipped解压为uzipped uzipped = zip(*zippped) for j in uzipped: print(j)输出结果为: (1, 2, 3) (3, 4, 5) (7, 6, 0) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |